<?php
/**
 * @filename			Check.class.php
 * @function			公用检测处理类
 * @author				zfkun <zfkun@163.com>
 * @copyright 			ku6.com
 * @datetime			2007-1-21
 * @lastmodify			2007-3-29
 */
 
 class Check {
 	/**
 	 * 是否为空
 	 *
 	 * @param String $str
 	 * @return bool
 	 */
 	public static function isEmpty($str){
 		if(empty($str)){
 			return true;
 		}
		if($str == ''){
			return true;
		}
 		return false;
 	}
	
 	/**
 	 * 是否含有中文
 	 *
 	 * @param String $str
 	 * @return Bool
 	 */
 	public static function hasChinese($str){
 		$cns = Check::getLens($str);
 		if($cns['cn'] > 0){
 			return true;
 		}
 		return false;
 	}
 	
 	/**
 	 * 是否为纯中文
 	 *
 	 * @param String $str
 	 * @return Bool
 	 */
 	public static function isChinese($str){
		$cns = Check::getLens($str);
		if ($cns['cn'] > 0 && $cns['en'] == 0){
			return true;
		}
		return false;
 	}
	
 	 /**
 	 * 是否是数字
 	 *
 	 * @param Int $str
 	 * @return Bool
 	 */
  	public static function isNumber($str){
 		if(is_numeric($str)){
 			return true;
 		}
		//if(eregi("\d{1,}",$str)){
		//	return true;
		//}
 		return false;
 	}
	
 	/**
 	 * 是否是纯英文
 	 *
 	 * @param unknown_type $str
 	 * @return unknown
 	 */
	public static function isEnglish($str){
		if(eregi("[^a-z]",$str)){
			return false;
		}else{
			return true;
		}
	}
	/**
	 * 是否是有效帐号
	 *
	 * @param unknown_type $str
	 * @return unknown
	 */
	// 有效帐号
	public static function isAccount($str){
		if(preg_match("/[^\d\w_-]/i",$str)){
			return false;
		}else{
			return true;
		}
	}
	
	/**
	 * 是否符合Email规范
	 *
	 * @param unknown_type $email
	 * @return unknown
	 */
 	public static function isEmail($email){
		if(eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)){
			return true;
		}else{
			return false;
		}
 	}
	
 	/**
 	 * 是否符合URL规范
 	 *
 	 * @param unknown_type $url
 	 * @return unknown
 	 */
 	public static function isURL($url){
		if(preg_match( '/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}((:[0-9]{1,5})?\/.*)?$/i' ,$url)){
			return true;
		}else{
			return false;
		}
 	}
	
 	/**
 	 * 是否是QQ号码
 	 *
 	 * @param unknown_type $str
 	 * @return unknown
 	 */
 	public static function isQQ($str){
 		if(is_numeric($str)){
 			return true;
 		}
		if(eregi("\d{5,12}",$str)){
			return true;
		}
 		return false;
 	}
	
 	/**
 	 * 是否是时间格式
 	 *
 	 * @param unknown_type $str
 	 * @param unknown_type $op
 	 * @return unknown
 	 */
 	public static function isDate($str,$op='-'){
		$_t = @explode($op,$str);
		if(count($_t) != 3){
			return false;
		}
 		if(!is_numeric($_t[0]) || !is_numeric($_t[1]) || !is_numeric($_t[2])){
 			return false;
 		}
 		return checkdate(intval($_t[1]), intval($_t[2]), intval($_t[0]));
 	}
	
 	/**
 	 * 是否是手机号码
 	 *
 	 * @param unknown_type $str
 	 * @return unknown
 	 */
 	public static function isMobile($str){
		if(preg_match("/^1[3|5]\d{9}$/", $str)){
			return true;
		}else{
			return false;
		}
 	}
	
 	/**
 	 * 是否是电话号码
 	 *
 	 * @param unknown_type $str
 	 * @return unknown
 	 */
 	public static function isPhone($str){
		if(preg_match("/^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/", $str)){
			return true;
		}else{
			return false;
		}
 	}
	
 	/**
 	 * 是否是合法身份证
 	 *
 	 * @param unknown_type $str
 	 * @return unknown
 	 */
 	public static function isCard($str){
		if(preg_match("/^\d{15}(\d{2}[xX0-9])?$/", $str)){
			return true;
		}else{
			return false;
		}
 	}
	
 	/**
 	 * 是否是邮编
 	 *
 	 * @param unknown_type $str
 	 * @return unknown
 	 */
 	public static function isZip($str){
		if(preg_match("/^[1-9]\d{5}$/", $str)){
			return true;
		}else{
			return false;
		}
 	}

	/**
	 * 是否相等
	 *
	 * @param unknown_type $str1
	 * @param unknown_type $str2
	 * @return unknown
	 */
	public static function isEqual($str1,$str2){
		return $str1 === $str2;
	}
 	//长度范围(包括边界)
 	public static function isBetween($min,$max,$str){
 		$cns = Check::getLens($str);
 		$len = $cns['cn'] * 2 + $cns['en'];

 		if ($len < $min || $len > $max){
 			return false;
 		} else {
 			return true;
 		}
 	}
 	//取长度信息
 	public static function getLens($str){
 		$numCn = 0;
 		$numEn = 0;
 		for ($i=0; $i<strlen($str); $i++) {
 			if (ord($str[$i]) > 127) {
 				$numCn++;
 				$i += 2;
 			} else {
				$numEn++;
			}
 		}
 		return array("cn"=>$numCn,"en"=>$numEn,"all"=>($numCn*2+$numEn));
 	}
	// 去除HTML标签、对' " 加斜线
	public static function strip($str){
		$str = strip_tags($str);
		$str = addslashes($str);
		return $str;
	}
	
	/**
	 * PHP截取UTF-8字符串
	 * 英文、数字(半角)为1字节(8位),中文(全角)为3字节
	 * param $str 源字符串
	 * param $len 截取长度
	 * param $append 末尾是否强制加入".."
	 * 
	 * return 取出的字符串 当$len小于等于0时,会返回整个字符串
	 */
	public static function utfSubStr($str,$len,$append = true){
		$theStr = $str;
		for ($i=0;$i<$len;$i++) {
			$temp_str = substr($str,0,1);
			if (ord($temp_str) > 127) {
				$i++;
				if ($i < $len) {
					$new_str[]	= substr($str,0,3);
					$str		= substr($str,3);
				}
			} else {
				$new_str[]	= substr($str,0,1);
				$str		= substr($str,1);
			}
		}
		if($append) {
			if($theStr == join($new_str)){
				return $theStr;
			} else {
				return join($new_str)."..";
			}
		} else {
			return join($new_str);
		}
	}

	public static function isDomain(){
	}
 }
?>
